﻿namespace MicroCloud.Options
{
    /// <summary>
    /// Mvc选项
    /// </summary>
    public class MvcOption
    {
        #region 属性
        /// <summary>
        /// 获取或设置 默认语言，可实现AcceptLanguage请求语言的消息字符解析，语言文件存放于“configs/localization”路径下
        /// </summary>
        public string DefaultLanguage { get; set; }

        /// <summary>
        /// 获取或设置 Json属性名称驼峰(lowerCase)写法设置，默认：false
        /// </summary>
        public bool IsLowercaseJsonProperty { get; set; } = false;

        /// <summary>
        /// 获取或设置 URL驼峰(lowerCase)写法设置，默认：false
        /// </summary>
        public bool IsLowercaseUrls { get; set; } = false;

        /// <summary>
        /// 获取或设置 循环引用处理："Error"、"Ignore"、"Serialize"，默认："Ignore"
        /// </summary>
        public string ReferenceLoopHandling { get; set; } = "Ignore";

        /// <summary>
        /// 获取或设置 Null值处理："Include"、"Ignore"，默认："Include"
        /// </summary>
        public string NullValueHandling { get; set; } = "Include";

        /// <summary>
        /// 获取或设置 String与Enum类型转换，默认：false
        /// </summary>
        public bool StringEnumConvert { get; set; } = false;

        /// <summary>
        /// 获取或设置 String与Long类型转换，默认：true
        /// </summary>
        public bool StringLongConvert { get; set; } = true;

        /// <summary>
        /// 获取或设置 日期时间格式化处理："Iso"、"Microsoft"，默认："Iso"
        /// </summary>
        public string DateFormatHandling { get; set; } = "Iso";

        /// <summary>
        /// 获取或设置 日期时间格式化字符串，例如："yyyy/MM/dd HH:mm:ss"，默认：""
        /// </summary>
        public string DateFormatString { get; set; } = "";

        /// <summary>
        /// 获取或设置 日期时间时区处理：
        /// Local - 当地时区；
        /// Utc - UTC时区；
        /// Unspecified - 未指定(如果DateTime正在转换为字符串，则视为本地时间。如果字符串正在转换为DateTime，如果指定了时区，则转换为本地时间)；
        /// RoundtripKind - 转换时应保留时区信息。
        /// </summary>
        public string DateTimeZoneHandling { get; set; } = "Local";

        /// <summary>
        /// 获取或设置 日期时间解析处理：
        /// None - 日期格式的字符串不会解析为日期类型，而是作为字符串读取；
        /// DateTime - 日期格式的字符串，例如“\/Date(1198908717056)\/”和“2012-03-21T05:40Z”，被解析为System.DateTime；
        /// DateTimeOffset - 日期格式的字符串，例如“\/Date(1198908717056)\/”和“2012-03-21T05:40Z”，被解析为System.DateTimeOffset。
        /// </summary>
        public string DateParseHandling { get; set; } = "DateTime";

        #endregion

    }

}
